﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    class Program
    {

        static Dictionary<int, Student> arrylist = new Dictionary<int, Student>(); 
        static void Main(string[] args)
        {
            //            添加3个类，分别实现 IComparer<T>接口，实现对Student类的三个字段的排序。
            //1、学生类：学号、姓名、年龄
            //2、请选择：1、添加学生信息。2、查询学生信息。
            //3、重复的学号不能添加。
            //4、查询学生信息功能中有：1、查询所有（按学号排序）2、查询所有（按姓名排序），2、查询所有（按年龄排序）4、按学号查询（查没有，则打印查无此学生）5、退出
            Student student = new Student("张三",19,01);
            Student student1 = new Student("李四", 20, 05);
            Student student2 = new Student("王五", 23, 03);

            arrylist.Add(student.Age,student);
            arrylist.Add(student1.Age,student1);
            arrylist.Add(student2.Age,student2);
            Test();

            

        }

        static void Test() 
        {
            Student s = new Student();
            Console.WriteLine("请选择：1、添加学生信息。2、查询学生信息。");
            int a = int.Parse(Console.ReadLine());

            switch (a)
            {
                case 1:
                    Console.WriteLine("请输入学生姓名");
                    s.Name = Console.ReadLine();
                    Console.WriteLine("请输入学生年龄");
                    s.Age = int.Parse(Console.ReadLine());
                    Console.WriteLine("请输入学生学号");
                    s.Number = int.Parse(Console.ReadLine());


                    if (arrylist.ContainsKey(s.Number))
                    {
                        Console.WriteLine("学号重复");
                    }
                    else
                    {
                        arrylist[s.Number] = s;
                    }
                    Test();
                    break;
                   
                case 2:

                    Test1();

                    break;
                default:
                    Console.WriteLine("输入错误！！！");
                    break;
            }

        }
       public static void Test1() 
        {
            Console.WriteLine("1、查询所有（按学号排序）2、查询所有（按姓名排序）3、查询所有（按年龄排序）4、按学号查询（查没有，则打印查无此学生）5、退出");
            string a = Console.ReadLine();
            switch (a)
            {
                case "1":
                    List<Student> stunum = arrylist.Values.ToList();
                    stunum.Sort(new Numbersore());
                    
                    Test();
                    break;
                case "2":
                    List<Student> name = arrylist.Values.ToList();
                    name.Sort(new Namesore());
                    Plist(name);
                    Test();
                    break;
                case "3":
                    List<Student> age = arrylist.Values.ToList();
                    age.Sort(new Agesore());
                    Plist(age);
                    Test();
                    break;
                case "4":
                    Console.WriteLine("请输入要查询学生的学号");
                    int a1 = int.Parse(Console.ReadLine());
                    if (arrylist.ContainsKey(a1))
                    {
                        Console.WriteLine(arrylist[a1]);
                    }
                    else
                    {
                        Console.WriteLine("无此学生");
                    }
                    Test();
                    break;
                case "5":
                    Environment.Exit(0);
                    break;
                default:
                    Console.WriteLine("输入错误");
                    break;
            }


        }
        private static void Plist(List<Student>list) 
        {
            foreach (var item in list)
            {
                Console.WriteLine(item);
            }
        
        }
    }
}
